package com.xinqi.modules.exam.paper.dto.rsp;

import com.xinqi.common.base.dto.CommonFileDTO;
import com.xinqi.modules.exam.paper.enums.ExamStatusEnum;
import com.xinqi.modules.exam.paper.enums.IsPublishAnswerEnum;
import com.xinqi.modules.exam.paper.enums.IsPublishScoreEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 课程测评-响应对象
 *
 * @author: linkai
 * @date: 2023/07/02
 */
@Data
@Schema(description = "课程测评-响应对象-1")
public class CourseExamPaperResultDTO implements Serializable {
    /**
     * 主键
     */
    @Schema(description = "主键", example = "")
    private Long id;
    /**
     * 创建者
     */
    @Schema(description = "创建者", example = "")
    private Long createBy;
    /**
     * 创建时间
     */
    @Schema(description = "创建时间", example = "")
    private LocalDateTime createTime;
    /**
     * 班级ID
     */
    @Schema(description = "班级ID", example = "")
    private Long classId;
    /**
     * 用户ID
     */
    @Schema(description = "用户ID", example = "")
    private Long userId;
    /**
     * 所属章节ID
     */
    @Schema(description = "所属章节ID", example = "")
    private Long chapterId;
    /**
     * 所属章节名称
     */
    @Schema(description = "所属章节名称", example = "")
    private String chapterName;
    /**
     * 名称
     */
    @Schema(description = "名称", example = "")
    private String name;
    /**
     * 详情
     */
    @Schema(description = "详情", example = "")
    private String content;
    /**
     * 总分
     */
    @Schema(description = "总分", example = "")
    private BigDecimal totalScore;
    /**
     * 题目总数
     */
    @Schema(description = "题目总数", example = "")
    private Integer questionTotal;
    /**
     * 题型总数
     */
    @Schema(description = "题型总数", example = "")
    private Integer questionTypeTotal;
    /**
     * 主观题数量
     */
    @Schema(description = "主观题数量", example = "6")
    private Integer subjectiveQuestionNum;
    /**
     * 客观题数量
     */
    @Schema(description = "客观题数量", example = "6")
    private Integer objectiveQuestionNum;
    /**
     * 附件列表
     */
    @Schema(description = "附件列表", example = "{}")
    private List<CommonFileDTO> files;
    /**
     * 测评状态，1-未发布 2-定时发布  3-已开始 4-已结束 5-已发布
     */
    @Schema(description = "测评状态，1-未发布 2-定时发布  3-已开始 4-已结束 5-已发布 ", example = "1")
    private ExamStatusEnum status;
    /**
     * 是否发布
     */
    @Schema(description = "是否发布", example = "")
    private Integer isRelease;
    /**
     * 发布时间
     */
    @Schema(description = "发布时间", example = "")
    private LocalDateTime releaseTime;
    /**
     * 开始时间
     */
    @Schema(description = "开始时间", example = "")
    private LocalDateTime startTime;
    /**
     * 截止时间
     */
    @Schema(description = "截止时间", example = "")
    private LocalDateTime endTime;
    /**
     * 是否生成分析报告
     */
    @Schema(description = "是否生成分析报告", example = "")
    private Integer isGenerateAssistant;

    /**
     * 试卷总数量
     */
    @Schema(description = "试卷总数量", example = "0")
    private Integer totalNum;
    /**
     * 已提交数量
     */
    @Schema(description = "已提交数量", example = "0")
    private Integer submittedNum;
    /**
     * 已批改数量
     */
    @Schema(description = "已批改数量", example = "0")
    private Integer approvedNum;
    /**
     * 是否限时答题
     */
    @Schema(description = "是否限时答题", example = "0")
    private Integer isLimitAnswerTime;
    /**
     * 限时答题时长（分）
     */
    @Schema(description = "限时答题时长（分）", example = "0")
    private Integer answerDuration;

    /**
     * 是否允许交卷后查看试卷
     */
    @Schema(description = "是否允许交卷后查看试卷", example = "")
    private Integer isSubmitView;
    /**
     * 是否公布成绩，0:不公布； 1:到截止时间公布；2:批阅后公布；
     */
    @Schema(description = "是否公布成绩，0:不公布； 1:到截止时间公布；2:批阅后公布；", example = "")
    private IsPublishScoreEnum isPublishScore;
    /**
     * 是否公布答案，0:不公布； 1:到截止时间公布；
     */
    @Schema(description = "是否公布答案，0:不公布； 1:到截止时间公布；", example = "")
    private IsPublishAnswerEnum isPublishAnswer;

}
